#pragma once
#include <iostream>
#include <string>
#include <ctime> //时间戳

#define INFO 1
#define WARNING 2
#define ERROR 3
#define FATAL 4
#define LOG(level,message) log(#level,message,__FILE__,__LINE__) //__是两个_
//C++中定义常量时使用const或enum比较安全
//enum LogLevel{INFO = 1,WARNING,ERROR,FATAL};

//__FILE__：获取当前源文件名(字符串形式)
//__LINE__：当前代码行号(整数形式)

// #运算符(字符串化操作符),将定义的宏转换为字符串如：将INFO可以转换为"INFO"

//日志的格式：[日志等级][时间戳][日志信息][日志信息所处的文件][日志信息对应的代码在那一行]
void log(std::string level,std::string message,std::string file_name,int line)
{
    std::cout<< "[" << level << "]" << "[" << time(nullptr) << "]" << "[" << message << "]" << "[" << file_name << "]" << 
    "[" << line << "]" << std::endl;
}